#!/bin/bash

gamble() {
    # 需要给定默认值
    local all=() sub_temp=() sub=() index=0
    # 从文件中读取选手名字
    while read line
        do 
            all+=("${line// /+}")
        done
        # 用于数据处理，不影响原来的all
        sub=("${all[@]}")
    # 打印所有的名单，调试用
    #echo ${all[@]}
    #开始抽奖
    while true
        do 
            #打印此轮参与抽奖的轮次index,人数count,名单sub
            echo "index=$index count=${#sub[@]} sub=${sub[@]}"
            ((index++))
            #备份次轮抽奖的名单sub_temp
            sub_temp=(${sub[@]})

            for i in ${!sub[@]};do 
                #模拟抽骰子的1-6，如果抽到的是4-6名单保留，如果是1-3从名单中剔除
                ((RANDOM % 6 + 1 > 3)) || unset sub[$i] 
            done

            #如果只有1个名额，则该名单为获奖者
            ((${#sub[@]} == 1)) && {
                echo 
                #输出该获奖者名称
                echo winner=${sub[@]}
                #跳出循环，抽奖结束
                break;
            }
            # 如果最后名单列表为空，则使用该轮备份名单继续抽奖
            ((${#sub[@]} == 0)) && {
                sub=("${sub_temp[@]}")
            }
        done
}

#将抽奖名单放入namelist文件中
cat namelist | gamble
